package com.ruicar.afs.cloud.apply.pre.loan.mq.sender;

import com.ruicar.afs.cloud.common.modules.dto.mq.loan.LoanApplySubmitInfo;
import com.ruicar.afs.cloud.common.modules.dto.mq.loan.LoanDiscardDTO;
import com.ruicar.afs.cloud.common.modules.dto.mq.loan.gpsdto.ApplyGpsInfoDto;
import com.ruicar.afs.cloud.common.mq.rabbit.anno.send.AfsRabbitMqClient;
import com.ruicar.afs.cloud.common.mq.rabbit.anno.send.AfsRabbitMqSender;
import com.ruicar.afs.cloud.common.mq.rabbit.message.AfsTransEntity;
import com.ruicar.afs.cloud.image.entity.ComAttachmentFile;

import java.util.List;

/**
 * @author panhj
 */
@AfsRabbitMqClient
public interface CaseLoanInfoSender {

    /**
     * 提交案件-消息发送
     * 传对象
     *
     * @param transEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendForCaseLoanSubmit(AfsTransEntity<LoanApplySubmitInfo> transEntity);
    /**
     * 提交案件-消息发送
     * 传对象
     *
     * @param transEntity
     */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendForCaseGpsInfoSubmit(AfsTransEntity<ApplyGpsInfoDto> transEntity);

    /**
     * 提交案件-合同取消
     * */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.apply}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendContractCancelToCase(AfsTransEntity<LoanDiscardDTO> transEntity);
    /**
     * 合同激活推送模板数据给合同系统
     * */
    @AfsRabbitMqSender(serverAlias = "${com.ruicar.afs.cloud.rabbitQueue.serverAlia}", queueName = "${com.ruicar.afs.cloud.rabbitQueue.queueName.wowApplyManageIcos}", exchangeName = "${com.ruicar.afs.cloud.rabbitQueue.exchangeName}")
    void sendFileToContract(AfsTransEntity<List<ComAttachmentFile>> transEntity);

}
